<div id="fullpage">
<h2>Inscriptions en ligne pour l'année <?= $current_promo - 1 ?>/<?= $current_promo ?></h2>
<div id="ajax_result"></div>
<div id="inscription">
	<?php
	echo form_open($form_action, $form_atr)
		.form_hidden('promotion', $current_promo);

	// Génération des étapes du formulaire
	foreach($steps as $step):
		echo form_fieldset($step['__desc__']);
		?>
		<table>
		<?php
		foreach($step as $key => $params) {
			?>
			<tr>
			<?php
			if (is_incremented_word('title', $key)) {
				echo '<td colspan="2">'.$params.'</td>';
			}
			elseif ($key != '__desc__') {
				$form_func = 'form_'.$params['type'];
				$params['options']['id'] = $key;
				$params['options']['name'] = $key;
				$params['options']['class'] = isset($params['options']['class']) ? $params['options']['class'] : '';
				$label = isset($field_labels[$key]) ? $field_labels[$key] : '';
				echo '<td>'.form_label($label, $key, array('class' => $params['options']['class'])).'</td>';
				echo '<td>'.$form_func($params['options']).'</td>';
				echo '<td class="check_error"></td>';
			}
			?>
			</tr>
			<?php
		}
		?>
		</table>
		<?php
		echo form_fieldset_close();
	endforeach;

	echo '<p>'.form_submit($submit).'&nbsp;&nbsp;<span id="loader"></span></p>'.form_close();
	?>
</div>
</div>
<script type="text/javascript">
$(function() {

	// Préparation des éléments cachés qui s'affichent sur demande
	$('label').each(function() {
		if($('#' + $(this).attr('for')).is(':hidden'))
			$(this).hide();
	});

	// mettre en valeur le label d'un champ qui prend le focus
	$('textarea, input[type="text"]').focus(function() {
		$(this).closest('tr').addClass('focused');
	});
	// enlever la mise en valeur du label d'un champ qui perd le focus
	$('textarea, input[type="text"]').blur(function() {
		$(this).closest('tr').removeClass('focused');
	});

	/**
	 * Notification d'erreur pour format A,B,C
	 */
	$('input:not(.optional), textarea:not(.optional)').blur(function() {
		if(!$(this).hasClass('row_on_error')) {
			if($(this).val() == '')
				set_on_error($(this), 'Ce champ ne peut pas être vide');
			else
				set_on_valid($(this));
		}
	});
	// Si on veut indiquer à l'utilisateur quels champs sont facultatifs
	/*
	$('.optional:visible').each(function() {
		display_row_notice($(this).parents('tr'), '(facultatif)');
	});
	*/
	$('.check_three_lvl').blur(function() {
		on_error($(this), /[abcde],[abcde],[abcde]/i, 'Format attendu : X,Y,Z (de A à E)');
	});
	$('.check_one_lvl').blur(function() {
		on_error($(this), /[abcde]/i, 'Format attendu : une lettre allant de A et E');
	});
	$('.check_birthdate').blur(function() {
		on_error($(this), /[0-9]{2}\/[0-9]{2}\/[0-9]{4}/i, 'Format attendu : JJ/MM/AAAA');
	});
	$('.check_phone').blur(function() {
		on_error($(this), /[0-9]{10}/i, 'Format attendu : 10 chiffres');
	});
	$('.check_yesno').blur(function() {
		var yesno = $(this).val();
		if(yesno != 'oui' && yesno != 'non')
			set_on_error($(this), 'Format attendu :<br />oui / non');
		else
			set_on_valid($(this));
	});

	/**
	 * Gestion générique des ajouts dynamiques de nouveaux champs
	 */
	var id_elem = new Object();
		id_elem['cursus'] = 1,
		id_elem['cursus_max'] = 6,
		id_elem['langues'] = 1,
		id_elem['langues_max'] = 3,
		id_elem['exp'] = 1,
		id_elem['exp_max'] = 3;
	$('input.button_add').click(function() {
		var target_elem = $(this).attr('id').split('_')[1],
			current = ++id_elem[target_elem],
			max = id_elem[target_elem+'_max'],
			id = target_elem + '_' + current;
		if(current <= max)
			$('label[for=' + id + '], .' + id).removeClass('hidden').show();
		else
			alert('Nombre maximum d\'éléments atteint !');
		return false;
	});

	// formToWizard
	$('form#form_inscription').formToWizard({ submitButton: 'submission' });

	// form submission
	$('input#submission').click(function() {
		if($('#form_inscription tr').hasClass('row_on_error')) {
			$.post(BASE_URL + 'inscription/notice', { class: 'error', message: 'Il y a des champs en erreur (surlignés en rouge). Veuillez les corriger puis réessayer.' }, function(result) {
				$('div#ajax_result').html(result);
				$(document).scrollTop(0);
			});
			return false;
		}
		var loader = $('span#loader');
		loader.html('<?= img(array('src' => 'images/ajax-loader.gif', 'alt' => 'traitement en cours...', 'class' => 'vmiddle')); ?>');
		$.ajax({
			url: BASE_URL + 'inscription/submission',
			type: 'POST',
			dataType: 'JSON',
			data: $('form#form_inscription').serializeArray(),

			success: function(result) {
				$('div#ajax_result').html(result.notice);
				// On remonte en haut pour voir le résultat
				$(document).scrollTop(0);
				// Si inscription validée, on cache le formulaire pour éviter toute confusion
				if(result.ajax_valid)
					$('div#inscription').hide();
				// On clear le loader
				loader.html('');
			},
			error: function(xhr, textStatus, errorThrown) {
				alert('Erreur de traitement, veuillez rééssayer');
			}
		});
		return false;
	});

	/**
	 * Affichage d'une étape au clic sur son libellé
	 */
	$('#steps li').click(function(event) {
		step = $(this).attr('id');
		step_num = step.charAt(step.length - 1);
		$('#steps li').removeClass('current');
		$(this).addClass('current');
		$('#form_inscription > div').hide();
		$('div#step' + step_num).show();
	});
});
</script>
